import axios from "axios";
import getConfig from "./config.js";

//读取外部配置
let config = {}
await getConfig(result => {
    config = result
})
const baseURL = config['serverUrl'] ? config['serverUrl'] : 'http://localhsot:8080'

const request = axios.create({
    baseURL: baseURL,  // 这里加上后端接口前缀，后端必须进行跨域配置
    timeout: 10000 // ms
})

// request 拦截器，可以自请求发送前对请求做一些处理
// 比如统一加token，对请求参数统一加密
request.interceptors.request.use(config => {
        const contentType = config.headers['Content-Type']
        if (!contentType) config.headers['Content-Type'] = 'application/json;charset=utf-8';
        // 设置请求头
        const token = localStorage.getItem('token')
        if (token) config.headers['Authorization'] = token
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// response 拦截器，可以在接口响应后统一处理结果
request.interceptors.response.use(response => {
        let result = response.data;
        // 如果是返回的文件
        if (response.config.responseType === 'blob') return result;
        // 兼容服务端返回的字符串数据
        if (typeof result === 'string' && result) result = JSON.parse(result)
        if (result.status === 501) {
            localStorage.setItem("status", result.status)
        } else {
            localStorage.setItem("status", "200")
        }
        return result;
    },
    error => {
        return Promise.reject(error);
    }
)
export default request

